/**
 * @type {import('@vue/cli-service').ProjectOptions}
 */
const glob = require("glob");
// 启动gzip压缩插件
const CompressionPlugin = require("compression-webpack-plugin");

const createPages = () => {
      const entryFiles = glob.sync("./src/entry/*/index.js");
      const pages = {};
      entryFiles.forEach(entryFile => {
            const match = entryFile.match(/src\/entry\/(.*)\/index\.js/);
            // 获取文件夹名字，也会是单页应用js入口
            const pageName = match && match[1];
            // 配置pages
            pages[pageName] = {
                  // page 的入口
                  entry: `src/entry/${pageName}/index.js`,
                  // 模板来源
                  template: `public/${pageName}.html`,
                  // 在 dist/index.html 的输出
                  filename: `${pageName}.html`,
                  // 在这个页面中包含的块，默认情况下会包含
                  // 提取出来的通用 chunk 和 vendor chunk。
                  chunks: ['chunk-vendors', 'chunk-common', pageName]
            };
      })

      return pages;
}

const pages = createPages();

module.exports = {
      publicPath: "./",
      pages: pages,
      productionSourceMap: false, // 是否开启sourcemap
      configureWebpack: () => {
            if (process.env.NODE_ENV === "production") {
                  return {
                        plugins: [new CompressionPlugin({
                              test: /\.js$|\.html$|\.css/,
                              threshold: 10240, // 对超10k的数据进行压缩
                              deleteOriginalAssets: false // 是否删除js文件
                        })]
                  }
            }
      },
      chainWebpack: (config) => {
            // config.module.rule("imageCompress").test(/\.(jpg|png|gif|svg|jpeg|webp)$/).use("image-webpack-loader").end()
      }
}